<template>
  <div class="import -container">
    <div class="app-container">
      <el-card shadow="always" :body-style="{ padding: '20px' }">
        <div slot="header">
          <span>批量导入员工</span>
        </div>
        <!-- card body -->
        <UploadExcel
          :on-success="handleSuccess"
          :before-upload="beforeUpload"
        />
      </el-card>
    </div>
  </div>
</template>

<script>
import { formatExcelDate } from '@/utils'
import { importEmployees } from '@/api/employees'
export default {

  methods: {
    // 读取选择的Excel文件之前会先执行这个函数
    // 校验通过返回true
    beforeUpload (file) {
      return true
    },
    // 校验通过后执行
    async handleSuccess ({ header, results }) {
      // console.tabel(header, results)
      // console.log(this.transformResults(results))
      await importEmployees(this.transformResults(results))
      this.$message.success('导入成功')
      // 返回页面
      this.$router.back()
    },
    // 中英转换
    transformResults (results) {
      // 中英对照关系
      const zhToen = {
        '入职日期': 'timeOfEntry',
        '聘用形式': 'formOfEmployment',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName'
      }
      // 准备新数组
      /* 循环外层数组=>中文key的员工数据  */
      // 里层循环的中文key的员工数据
      // 返回新数组
      // 转换时间因为时间不对
      const newArr = []
      results.forEach(item => {
        // item中文的key
        const newItem = {}
        for (const zhKey in item) {
          // 获取enkey 英文属性
          const enKey = zhToen[zhKey]
          // 处理时间
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            newItem[enKey] = formatExcelDate(item[zhKey], '-')
          } else {
            // 放到新对象上并赋值
            newItem[enKey] = item[zhKey]
          }
        }
        // push到新的数据
        newArr.push(newItem)
      })
      // 返回新数组
      return newArr
    }

  }

}

</script>

<style lang="scss" scoped>
</style>
